home *** CD-ROM | disk | FTP | other *** search
- /*
- Author: Howie Kaye
-
- Columbia University Center for Computing Activities, July 1986.
- Copyright (C) 1986, 1987, Trustees of Columbia University in the City
- of New York. Permission is granted to any individual or institution
- to use, copy, or redistribute this software so long as it is not sold
- for profit, provided this copyright notice is retained.
- */
-
-
- /*
- * cmchar
- *
- * This module contains a parse for a single character.
- * it is trivial. May be used when a single character of input is
- * required.
- */
-
- #define CHARERR /* char error table allocated here */
-
- #include "ccmdlib.h" /* get standard symbols */
- #include "cmfncs.h" /* and internal symbols */
-
- /*
- * forward declare parse functions.
- */
- int char_parse(), char_help(), char_cplt();
-
- #define charbrk cmallbk /* break on everything. */
-
- ftspec ft_char = { char_parse, char_help, char_cplt, 0, &charbrk };
-
- /*
- * char_parse:
- * parse a single character.
- */
- PASSEDSTATIC int
- char_parse(text, textlen, fdbp, parselen, value)
- char *text;
- int textlen;
- fdb *fdbp;
- int *parselen;
- pval *value;
- {
- *parselen = 0;
- if (textlen <= 1) return(CMxINC); /* no data, no parse */
- *parselen = 1;
- value->_pvchr = text[0];
- return(CMxOK);
- }
-
- /*
- * give a help message
- */
-
- PASSEDSTATIC int
- char_help(text, textlen, fdbp, cust)
- char *text;
- int textlen,cust;
- fdb *fdbp;
- {
- if (!cust)
- cmxputs("a character\n"); /* then print the token string */
- return(CMxOK);
- }
-
- /*
- * character completion. complete if one character
- */
- PASSEDSTATIC int
- char_cplt(text,textlen,fdbp,full,cplt,cpltlen)
- char *text,**cplt;
- int textlen,full,*cpltlen;
- fdb *fdbp;
- {
- *cplt = NULL; *cpltlen = 0;
- if (textlen == 1)
- return(CMP_GO | CMP_SPC);
- if (textlen == 0)
- return(CMP_BEL);
- else
- return(CMP_GO);
- }
-